package bosque.unc.gui;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Frame;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Toolkit;

import javax.swing.*;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
import javax.swing.border.TitledBorder;
import javax.swing.plaf.basic.BasicButtonUI;

import java.awt.Color;

import javax.swing.ButtonGroup;
import javax.swing.JLabel;
import javax.swing.JRadioButton;
import javax.swing.JToggleButton;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.ImageIcon;

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;
import java.util.Observable;
import java.util.Observer;
import java.util.logging.Logger;

import javax.swing.JSlider;
import javax.swing.JCheckBox;

import bosque.unc.EspejoSecundario;
import bosque.unc.Telescopio;
import bosque.unc.ayuda.ManoplaAyuda;
import bosque.unc.enumerations.Accion;
import bosque.unc.enumerations.Direccion;
import bosque.unc.exceptions.ManoplaException;
import static java.awt.GraphicsDevice.WindowTranslucency.*;



public class ManoplaTelGUI extends JFrame implements Observer{

	private JPanel contentPane;
	private JPanel panelVelocidad;
	public JPanel panelPlata;
	public JPanel panelTel;
	public JPanel panelCupu;
	private JLabel lblTelescopio;
	private JLabel lblPlata;
	private JLabel lblCupula;
	private JToggleButton btnStopTel;
	private JToggleButton btnEsteTel;
	private JToggleButton btnOesteTel;
	private JToggleButton btnSureTel;
	private JToggleButton btnNorteTel;
	private JToggleButton btnDerCupu;
	private JToggleButton btnIzqCupu;
	private JToggleButton btnStopCupu;
	private JToggleButton bbtnAbajoPlata;
	private JToggleButton btnArribaPlata;
	private JToggleButton btnAlejarPlata;
	private JToggleButton btnAcercarPlata;
	private JToggleButton btnStopPlata;
	private static Scoba scoba;	
	//private AjusteRampaAcelGUI aceleracion;	
	private JSlider sliderVelManual;
	private JLabel lblRapida;
	private JLabel lblMedia;
	private JLabel lblParado;
	private JLabel lblVelocidad;
	private JPanel panelMovimiento;
	private JPanel panelRelojeria;
	private JRadioButton rdbtnLenta;
	private JRadioButton rdbtnMedia;
	private JRadioButton rdbtnAlta;
	private JRadioButton rdbtnManual;
	private JCheckBox chkBoxRelojeria;
	private JCheckBox chckbxSeguimientoDeCupula;
	private JRadioButton rdbtnCalado;
	private JRadioButton rdbtnGuiado;
	private JRadioButton rdbtnlentaCupu;
	private JRadioButton rdbtnnormalCupu;
	
	private boolean flagVelocidadManual= false;
	private boolean flagVelocidad= false;
	private boolean flagSlideActivo = true;
	
	private int rampaValorMaximo = 80;
	private int rampaValorMinimo = 20;
	private int pasoSlider = 1;

	private JButton btnEspejoSecundario;
	private EspejoSecundarioGUI espejo ;
	private Telescopio telescopio;
	private JButton btnAyuda;
	
	private ManoplaAyuda manoplaAyuda;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		
		
		GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
	        GraphicsDevice gd = ge.getDefaultScreenDevice();

	        //If translucent windows aren't supported, exit.
	        if (!gd.isWindowTranslucencySupported(TRANSLUCENT)) {
	            System.err.println(
	                "Translucency is not supported");
	                System.exit(0);
	        }
           
	        SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				
				
				try
				{
					System.out.println("Look and Fell: " + UIManager.getSystemLookAndFeelClassName());
					UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
				}
				catch (Exception ex)
				{
					System.out.println("Failed loading L&F: ");
					System.out.println(ex);
				}
				
				
				try {
					ManoplaTelGUI frame = new ManoplaTelGUI(getScoba());
					frame.setOpacity(0.55f);
					frame.setVisible(true);
					
				} catch (Exception e) {
					e.printStackTrace();
				}
				
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public ManoplaTelGUI(Scoba sco)
	{		
		super("TranslucentWindow");
		setResizable(false);
		inicializarManopla(sco);
		this.habilitarBotonesVelocidades(false);
		this.habilitarPanelVelocidad(false);
		
	}
		
	public void inicializarManopla(Scoba sco)	
	{		
		ManoplaTelGUI.setScoba(sco);
		this.telescopio = getScoba().getTelescopio();
		try {
			telescopio.setearVelocidad(telescopio.getRampaValMinManopla());
		} catch (ManoplaException e3) {
			// TODO Auto-generated catch block
			e3.printStackTrace();
		}
		setTitle("Manopla Telescopio");		
		this.setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("resources/telescope.png")));
		setBounds(650, 30, 683, 666);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);	
		panelTel = new JPanel();
		panelTel.setBorder(new TitledBorder(null, "Telescopio", TitledBorder.CENTER, TitledBorder.TOP, new Font ( "Arial", Font.BOLD, 15 ), new Color(75, 0, 130)));
		panelTel.setBounds(10, 11, 596, 344);
		contentPane.add(panelTel);
		panelTel.setLayout(null);
		//velocidadDisabled();
		
		btnNorteTel = new JToggleButton("");
		btnNorteTel.setIcon(new ImageIcon( getClass().getResource("resources/arri.png" )));
		btnNorteTel.setBounds(143, 60, 32, 32);		
		btnNorteTel.addActionListener(new ActionListener()
		{
			
			public void actionPerformed(ActionEvent arg0)
			{				
				//habilitarPanelVelocidad(true);
				//flagVelocidadManual= true;
				//flagVelocidad = true;	
				rdbtnLenta.setSelected(true);
				try {
					telescopio.setearVelocidad(telescopio.getRampaValMinManopla());
				} catch (ManoplaException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				moverTelescopio(Direccion.NORTE);
				
				if(btnNorteTel.isSelected())
				{
					btnStopTel.setEnabled(true);
					btnEsteTel.setEnabled(false);				
					btnSureTel.setEnabled(false);			
					btnOesteTel.setEnabled(false);				
					lblTelescopio.setText("Moviendo telescopio hacia el Norte");				
					habilitarBotonesVelocidades(true); // Habilitar los controles de velocidad	
					rdbtnGuiado.setEnabled(false);
					rdbtnCalado.setEnabled(false);

				}
				else 
				{					
					btnNorteTel.setSelected(true);
				}
				
                
				
								
			}
		});
		
		
		panelTel.add(btnNorteTel);
		
		btnOesteTel = new JToggleButton("");
		btnOesteTel.setIcon(new ImageIcon( getClass().getResource("resources/der.png" )));
		btnOesteTel.setBounds(59, 140, 32, 32);		
		btnOesteTel.addActionListener(new ActionListener() 
		{
			
			public void actionPerformed(ActionEvent arg0) 
			{
				
				//flagVelocidadManual= true;
				//flagVelocidad = true;	
				rdbtnLenta.setSelected(true);
				try {
					telescopio.setearVelocidad(telescopio.getRampaValMinManopla());
				} catch (ManoplaException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				moverTelescopio(Direccion.OESTE);
				
				if (btnOesteTel.isSelected())
				{
					btnStopTel.setEnabled(true);
					btnNorteTel.setEnabled(false);
					btnSureTel.setEnabled(false);
					btnEsteTel.setEnabled(false);
					rdbtnGuiado.setEnabled(false);
					rdbtnCalado.setEnabled(false);
					lblTelescopio.setText("Moviendo telescopio hacia el Oeste");
					try {
						getScoba().getTelescopio().mover(Direccion.OESTE);
					} catch (ManoplaException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}			

					if(rdbtnCalado.isSelected())
					{
						habilitarBotonesVelocidades(true);
					}
					else
					{
						habilitarBotonesVelocidades(false);
					}
				
				}
				
			
			}
			
			
		});
		
		panelTel.add(btnOesteTel);
		
		btnSureTel = new JToggleButton("");
		btnSureTel.addActionListener(new ActionListener() 
		{
			
			public void actionPerformed(ActionEvent arg0) 
			{
				//flagVelocidadManual= true;
				//flagVelocidad = true;	
				rdbtnLenta.setSelected(true);
				try {
					telescopio.setearVelocidad(telescopio.getRampaValMinManopla());
				} catch (ManoplaException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				moverTelescopio(Direccion.SUR);
				
					if(btnSureTel.isSelected())
					{						
						btnStopTel.setEnabled(true);
						btnNorteTel.setEnabled(false);
						btnEsteTel.setEnabled(false);
						btnOesteTel.setEnabled(false);
						rdbtnGuiado.setEnabled(false);
						rdbtnCalado.setEnabled(false);
						lblTelescopio.setText("Moviendo telescopio hacia el Sur");
						habilitarBotonesVelocidades(true); // Habilitar los controles de velocidad				
					
					}
					else
					{
						btnSureTel.setSelected(true);
					}
					
					//habilitarPanelVelocidad(true);
					
					
			
			}
		});
		

		btnSureTel.setIcon(new ImageIcon( getClass().getResource("resources/aba.png" )));
		btnSureTel.setBounds(143, 224, 32, 32);
	
		panelTel.add(btnSureTel);
		
		btnEsteTel = new JToggleButton("");
		btnEsteTel.setIcon(new ImageIcon( getClass().getResource("resources/izq.png" )));
		btnEsteTel.setBounds(224, 140, 32, 32);		
		btnEsteTel.addActionListener(new ActionListener() 
		{			
			public void actionPerformed(ActionEvent arg0) 
			{				
				//flagVelocidadManual= true;
				//flagVelocidad = true;	
				rdbtnLenta.setSelected(true);
				try {
					telescopio.setearVelocidad(telescopio.getRampaValMinManopla());
				} catch (ManoplaException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				moverTelescopio(Direccion.ESTE);
				
				if (btnEsteTel.isSelected())
				{
					btnStopTel.setEnabled(true);
					btnNorteTel.setEnabled(false);
					btnSureTel.setEnabled(false);
					btnOesteTel.setEnabled(false);
					rdbtnGuiado.setEnabled(false);
					rdbtnCalado.setEnabled(false);
					lblTelescopio.setText("Moviendo telescopio hacia el Este");
					try {
						getScoba().getTelescopio().mover(Direccion.ESTE);
					} catch (ManoplaException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}			

					if(rdbtnCalado.isSelected())
					{
						habilitarBotonesVelocidades(true);
					}
					else
					{
						habilitarBotonesVelocidades(false);
					}
				
				}
								
			}
		});

		panelTel.add(btnEsteTel);
		
		btnStopTel = new JToggleButton("");
		btnStopTel.setEnabled(false);
		btnStopTel.setIcon(new ImageIcon( getClass().getResource("resources/stop.png" )));
		btnStopTel.setBounds(132, 130, 55, 53);	
		btnStopTel.setBorderPainted(false);
		btnStopTel.setContentAreaFilled(false); 
		btnStopTel.setOpaque(true);
	
		btnStopTel.addActionListener(new ActionListener() 
		{		
			public void actionPerformed(ActionEvent arg0) 
			{
				telescopio.setAcelerando(false);
				
				try {
					Thread.sleep(100);
				} catch (InterruptedException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				btnStopTel.setEnabled(false);
				lblTelescopio.setText("Telescopio parado");
				try {
					telescopio.desacelerarTelescopio(telescopio.getRampaValMinManopla(),telescopio.getRampaDelayManopla(), true);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
				//scoba.getTelescopio().mover(Direccion.PARADO);
							
				habilitarPanelVelocidad(false);
				velocidadDisabled();
				
				
			}
		});
		panelTel.add(btnStopTel);
		
		JLabel lblvelTel = new JLabel("Velocidad");
		lblvelTel.setFont(new Font("PT Serif", Font.PLAIN, 15));
		lblvelTel.setBounds(312, 64, 71, 14);
		
		
		panelTel.add(lblvelTel);
		
		rdbtnLenta = new JRadioButton("Lenta");
		rdbtnLenta.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				telescopio.setAcelerando(false); // para que muera otro hilo que puede estar abierto antes.
				try {
					telescopio.getHiloControlVelocidad().join(); // espera que el hilo anterior muera
				} catch (InterruptedException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				catch (NullPointerException e2) {
					// TODO Auto-generated catch block
					//e2.printStackTrace();
				}
				
				if(rdbtnLenta.isSelected())
				{
					try {
						Integer vel =  telescopio.getRampaValMinManopla();
						telescopio.desacelerarTelescopio(vel, telescopio.getRampaDelayManopla(), false);
						//velManual.setMinimum(scoba.getTelescopio().getVelMov()); // para hacer el cuando cambio a velo lenta se cambie el jslider
						sliderVelManual.setValue(sliderVelManual.getMinimum());
					
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}	
					habilitarPanelVelocidad(false);
					

					
				}
				else
				{
					rdbtnLenta.setSelected(true);
				}
			}
		});
		
		rdbtnLenta.setBounds(312, 96, 87, 23);
		panelTel.add(rdbtnLenta);
		
		rdbtnMedia = new JRadioButton("Media");
		rdbtnMedia.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				habilitarPanelVelocidad(false);
				telescopio.setAcelerando(false); // para que muera otro hilo que puede estar abierto antes.
				try {
					telescopio.getHiloControlVelocidad().join(); // espera que el hilo anterior muera
				} catch (InterruptedException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				catch (NullPointerException e2) {
					// TODO Auto-generated catch block
					//e2.printStackTrace();
				}
				Integer velPromedio = (telescopio.getRampaValMinManopla()+telescopio.getRampaValMaxManopla())/2 ;
				
				if(rdbtnMedia.isSelected())
				{
					if(telescopio.getVelMov() < velPromedio)
					{
						try {
							
							telescopio.acelerarTelescopio(velPromedio, telescopio.getRampaDelayManopla());
							
							int velocidadMedia = (sliderVelManual.getMaximum()+ sliderVelManual.getMinimum()) / 2;
							sliderVelManual.setValue(velocidadMedia);
						} catch (InterruptedException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}	
					}
					//System.out.println("Velocidad de Telescopio: "+ scoba.getTelescopio().getVelMov());
					
					else
					{
						try {
							
							telescopio.desacelerarTelescopio(velPromedio, telescopio.getRampaDelayManopla(), false);
						} catch (InterruptedException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}	
					}
					
					//panelVelocidad.setVisible(false);
				}
				else
				{
					rdbtnMedia.setSelected(true);
				}
			}
		});
		rdbtnMedia.setBounds(312, 135, 87, 23);
		panelTel.add(rdbtnMedia);
		
		rdbtnAlta = new JRadioButton("Alta");
		rdbtnAlta.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				habilitarPanelVelocidad(false);
				telescopio.setAcelerando(false); // para que muera otro hilo que puede estar abierto antes.
				try {
					telescopio.getHiloControlVelocidad().join(); // espera que el hilo anterior muera
				} catch (InterruptedException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				catch (NullPointerException e2) {
					// TODO Auto-generated catch block
					//e2.printStackTrace();
				}
				if(rdbtnAlta.isSelected())
				{
					try {
						Integer vel = telescopio.getRampaValMaxManopla();
						telescopio.acelerarTelescopio(vel, telescopio.getRampaDelayManopla());
						sliderVelManual.setValue(sliderVelManual.getMaximum());
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}	
					//panelVelocidad.setVisible(false);
					//System.out.println("Velocidad de Telescopio: "+ scoba.getTelescopio().getVelMov());
				}
				else
				{
					rdbtnAlta.setSelected(true);
					System.out.println("---------------------");
				}
			}
		});
		rdbtnAlta.setBounds(312, 175, 87, 23);
		panelTel.add(rdbtnAlta);
		
		rdbtnManual = new JRadioButton("Manual");
		rdbtnManual.setSelected(true);
		
		rdbtnManual.addActionListener(new ActionListener() 
		{
			
			public void actionPerformed(ActionEvent arg0) 
			{				
				flagVelocidadManual = true;
				habilitarPanelVelocidad(true);
				
				/*try
				{
					if(!panelVelocidad.isVisible())
					{					
						panelVelocidad.setVisible(true);
						panelVelocidad.setEnabled(false);
						
					}
					else
					{
						panelVelocidad.requestFocus();							
						
					}
				}
				
				catch(Exception e1)
				{
					panelVelocidad.setVisible(true);
					
					panelVelocidad.setEnabled(false);
				}*/
				

	
			}
		});
		
		rdbtnManual.setBounds(312, 215, 80, 23);
		panelTel.add(rdbtnManual);
		
		
		ButtonGroup GrupoVel = new ButtonGroup(); 
		GrupoVel.add(rdbtnManual);
		GrupoVel.add(rdbtnAlta);
		GrupoVel.add(rdbtnLenta);
		GrupoVel.add(rdbtnMedia);
		
		panelVelocidad = new JPanel();
		panelVelocidad.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Velocidad Manual", TitledBorder.CENTER, TitledBorder.TOP, null, new Color(75, 0, 130)));
		panelVelocidad.setBounds(400, 40, 186, 198);
		panelVelocidad.setVisible(true);
		panelTel.add(panelVelocidad);
		panelVelocidad.setLayout(null);

		
		
	
		
		
		/* JSlider de la velociadad manual
		 * se obtiene el valor maximo y minimo 
		 * de la rampa a traves de la clase telescopio*/

		rampaValorMaximo = telescopio.getRampaValMaxManopla();
		rampaValorMinimo = telescopio.getRampaValMinManopla();
		System.out.println("rampa val max: " + rampaValorMaximo);
		System.out.println("rampa val min: " + rampaValorMinimo);
		UIManager.put("Slider.onlyCenterMouseButtonDrag", Boolean.TRUE);
		sliderVelManual = new JSlider(JSlider.VERTICAL, rampaValorMinimo, rampaValorMaximo,  rampaValorMinimo);
		sliderVelManual.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {
			}
		});
        
		sliderVelManual.addMouseWheelListener(new MouseWheelListener() 
		
		{
			
			@Override
		    public void mouseWheelMoved(MouseWheelEvent e) 
		    {
				
		    	if (flagSlideActivo) {
					int valorVelocidad;
					int valorRueda = e.getWheelRotation();
					if (valorRueda < 0) {

						valorVelocidad = sliderVelManual.getValue()
								- sliderVelManual.getMinorTickSpacing();
						if (valorVelocidad >= sliderVelManual.getMinimum()) {
							sliderVelManual.setValue(sliderVelManual.getValue() + 1);//para que suba el jslider			            	 
							System.out.println(valorVelocidad);
							//velManual.setValue(iNewValue);
						} else {
							sliderVelManual.setValue(sliderVelManual.getMinimum());

						}

					} 
					else // rueda hacia abajo
					{

						valorVelocidad = sliderVelManual.getValue()
								+ sliderVelManual.getMinorTickSpacing();
						if (valorVelocidad <= sliderVelManual.getMaximum()) {
							sliderVelManual.setValue(sliderVelManual.getValue() - 1);
							System.out.println(valorVelocidad);
							// System.out.println("------" + scoba.getTelescopio().getVelMov());
							//velManual.setValue(iNewValue);
						} else {
							sliderVelManual.setValue(sliderVelManual.getMaximum());
						}

					}
					try {
						telescopio.setearVelocidad(valorVelocidad);
					} catch (ManoplaException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
				}
		    }
		    
			
		
		    
		});
		
	
		
		sliderVelManual.setBounds(75, 22, 39, 134);
		
		panelVelocidad.add(sliderVelManual);
		
		lblRapida = new JLabel("Alta");
		lblRapida.setBounds(130, 22, 46, 14);
		panelVelocidad.add(lblRapida);
		
		lblMedia = new JLabel("Media");
		lblMedia.setBounds(130, 79, 46, 14);
		panelVelocidad.add(lblMedia);
		
		lblParado = new JLabel("Lenta");
		lblParado.setBounds(130, 142, 46, 14);
		panelVelocidad.add(lblParado);
		
		JButton btnAumentarVel = new JButton("");
		btnAumentarVel.setIcon(new ImageIcon( getClass().getResource("resources/arri.png" )));
		btnAumentarVel.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				int valorVelocidad = telescopio.getRampaValMinManopla();
				if(flagVelocidadManual)
				{
				valorVelocidad = sliderVelManual.getValue() - sliderVelManual.getMinorTickSpacing()  ;
	            if (valorVelocidad >= sliderVelManual.getMinimum())
	            	{
	            	sliderVelManual.setValue(sliderVelManual.getValue() + 1);//para que suba el jslider			            	 
	            	 System.out.println( valorVelocidad);
	            	
	            	}
	            else
	            	{
	            	sliderVelManual.setValue(sliderVelManual.getMinimum());
	            	
	            	}	
				
				}
				 try {
					telescopio.setearVelocidad(valorVelocidad);
				} catch (ManoplaException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		});
		btnAumentarVel.setBounds(24, 22, 32, 32);
		panelVelocidad.add(btnAumentarVel);
		
		JButton btnBajarVel = new JButton("");
		btnBajarVel.setIcon(new ImageIcon( getClass().getResource("resources/aba.png" )));
		btnBajarVel.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				int valorVelocidad= telescopio.getRampaValMinManopla();
			if(flagVelocidadManual){
				valorVelocidad = sliderVelManual.getValue() + sliderVelManual.getMinorTickSpacing()  ;
	            if (valorVelocidad <= sliderVelManual.getMaximum())
	            {
	            	sliderVelManual.setValue(sliderVelManual.getValue() - 1);
	            	 System.out.println(valorVelocidad);
	            	
	            }
	            else
	            {
	            	sliderVelManual.setValue(sliderVelManual.getMaximum());
	            }
				
				
			}
			
			 try {
				telescopio.setearVelocidad(valorVelocidad);
			} catch (ManoplaException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			}
		});
		btnBajarVel.setBounds(24, 124, 32, 32);
		panelVelocidad.add(btnBajarVel);
		
		lblTelescopio = new JLabel("Telescopio : Parado");
		lblTelescopio.setBounds(10, 281, 245, 14);
		panelTel.add(lblTelescopio);
		
		DesactivarPanelVelocidad();
		
		ButtonGroup GrupoGuiadoCalado = new ButtonGroup();
		
		panelMovimiento = new JPanel();
		panelMovimiento.setBorder(new TitledBorder(null, "Movimiento", TitledBorder.LEADING, TitledBorder.TOP, null, null));
		panelMovimiento.setBounds(457, 259, 129, 70);
		panelTel.add(panelMovimiento);
		panelMovimiento.setLayout(null);
		
		rdbtnCalado = new JRadioButton("Calado");
		rdbtnCalado.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if(rdbtnCalado.isSelected())
				{
					try {
						telescopio.activarMovCalado(true);
					} catch (ManoplaException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
				}
				else
				{
					try {
						telescopio.activarMovCalado(false);
					} catch (ManoplaException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}

				}
			}
		});
		rdbtnCalado.setBounds(23, 40, 71, 23);
		panelMovimiento.add(rdbtnCalado);
		GrupoGuiadoCalado.add(rdbtnCalado);
		
		rdbtnGuiado = new JRadioButton("Guiado");
		rdbtnGuiado.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if(rdbtnGuiado.isSelected())
				{
					try {
						telescopio.activarMovCalado(false);
					} catch (ManoplaException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
				}
				else
				{
					try {
						telescopio.activarMovCalado(true);
					} catch (ManoplaException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
				}
				
			}
			
		});
		rdbtnGuiado.setBounds(23, 14, 71, 23);
		panelMovimiento.add(rdbtnGuiado);
		rdbtnGuiado.setSelected(true);
		GrupoGuiadoCalado.add(rdbtnGuiado);
		
		panelRelojeria = new JPanel();
		panelRelojeria.setBorder(new TitledBorder(null, "Relojer\u00EDa", TitledBorder.LEADING, TitledBorder.TOP, null, null));
		panelRelojeria.setBounds(313, 259, 107, 70);
		panelTel.add(panelRelojeria);
		panelRelojeria.setLayout(null);
		
		chkBoxRelojeria = new JCheckBox("Relojer\u00EDa");
		chkBoxRelojeria.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
								
				if(chkBoxRelojeria.isSelected())
				{
					getScoba().getTelescopio().activarRelojeria(true);
				}
				else
				{
					getScoba().getTelescopio().activarRelojeria(false);
					
				}
			}
		});
		chkBoxRelojeria.setBounds(6, 23, 71, 23);
		panelRelojeria.add(chkBoxRelojeria);
		
		lblVelocidad = new JLabel("");
		lblVelocidad.setFont(new Font("Tahoma", Font.PLAIN, 15));
		lblVelocidad.setBounds(257, 315, 46, 22);
		panelTel.add(lblVelocidad);
		
		lblVelocidad.setText("00");
		
		JLabel label = new JLabel("Velocidad  :");
		label.setFont(new Font("Tahoma", Font.PLAIN, 15));
		label.setBounds(176, 315, 80, 22);
		panelTel.add(label);
		
		chckbxSeguimientoDeCupula = new JCheckBox("Seguimiento de la cupula");
		chckbxSeguimientoDeCupula.setBounds(10, 317, 156, 23);
		chckbxSeguimientoDeCupula.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				if(chckbxSeguimientoDeCupula.isSelected())
				{
					getScoba().activarSeguimientoCupula();
				}
				else
				{
					getScoba().desactivarSeguimientoCupula();
				}
			}
		});
		
		panelTel.add(chckbxSeguimientoDeCupula);
		
		JLabel lblEste = new JLabel("Este");
		lblEste.setBounds(229, 183, 32, 14);
		panelTel.add(lblEste);
		
		JLabel lblOeste = new JLabel("Oeste");
		lblOeste.setBounds(59, 183, 32, 14);
		panelTel.add(lblOeste);
		
		JLabel lblNorte = new JLabel("Norte");
		lblNorte.setBounds(145, 35, 32, 14);
		panelTel.add(lblNorte);
		
		JLabel lblSur = new JLabel("Sur");
		lblSur.setBounds(150, 267, 32, 14);
		panelTel.add(lblSur);
		
		
	
		panelPlata = new JPanel();		
		panelPlata.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Plataforma", TitledBorder.CENTER, TitledBorder.TOP, new Font ( "Arial", Font.BOLD, 18 ), new Color(75, 0, 130)));
		panelPlata.setBounds(10, 366, 274, 251);
		contentPane.add(panelPlata);
		panelPlata.setLayout(null);
		
		btnStopPlata = new JToggleButton("");
		btnStopPlata.setEnabled(false);
		btnStopPlata.addActionListener(new ActionListener() 
		{
			public void actionPerformed(ActionEvent e) 
			{				
				if(btnStopPlata.isSelected())
				{
				enablebuttonsPlataforma();
				lblPlata.setText("Plataforma : Parada");
				getScoba().getPlataforma().mover(Direccion.PARADO);
				btnStopPlata.setEnabled(false);
				}
				else
				{
					btnStopPlata.setSelected(true);
				}
			}
		});
		
		btnStopPlata.setIcon(new ImageIcon( getClass().getResource("resources/stop.png" )));
		btnStopPlata.setOpaque(true);
		btnStopPlata.setContentAreaFilled(false);
		btnStopPlata.setBorderPainted(false);
		btnStopPlata.setBounds(106, 89, 55, 53);
		panelPlata.add(btnStopPlata);
		
		lblPlata = new JLabel("Plataforma : Parada");
		lblPlata.setBounds(10, 226, 254, 14);
		panelPlata.add(lblPlata);
		
		btnAlejarPlata = new JToggleButton("");
		btnAlejarPlata.addActionListener(new ActionListener() 
		{
			public void actionPerformed(ActionEvent e) 
			{
				
				if(btnAlejarPlata.isSelected())
				{
				btnArribaPlata.setEnabled(false);
				bbtnAbajoPlata.setEnabled(false);
				btnAcercarPlata.setEnabled(false);
				lblPlata.setText("Moviendo plataforma hacia afuera");
				getScoba().getPlataforma().mover(Direccion.AFUERA);
				btnStopPlata.setEnabled(true);				
			
				
				}
				else
				{
					btnAlejarPlata.setSelected(true);
				}
			}
		});
		
		btnAlejarPlata.setIcon(new ImageIcon( getClass().getResource("resources/der.png" )));
		btnAlejarPlata.setBounds(29, 102, 32, 32);
		panelPlata.add(btnAlejarPlata);
		
		btnArribaPlata = new JToggleButton("");
		btnArribaPlata.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent arg0) 
			{	
				if(btnArribaPlata.isSelected())
				{
				btnAcercarPlata.setEnabled(false);
				bbtnAbajoPlata.setEnabled(false);
				btnAlejarPlata.setEnabled(false);
				lblPlata.setText("Moviendo plataforma hacia arriba");
				getScoba().getPlataforma().mover(Direccion.ARRIBA);
				btnStopPlata.setEnabled(true);
				
				}
				else
				{
					btnArribaPlata.setSelected(true);
				}
				
			}
		});
		
		
		btnArribaPlata.setIcon(new ImageIcon( getClass().getResource("resources/arri.png" )));
		btnArribaPlata.setBounds(118, 34, 32, 32);
		panelPlata.add(btnArribaPlata);
		
		btnAcercarPlata = new JToggleButton("");
		btnAcercarPlata.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				
				if(btnAcercarPlata.isSelected())
				{
				btnArribaPlata.setEnabled(false);
				bbtnAbajoPlata.setEnabled(false);
				btnAlejarPlata.setEnabled(false);
				lblPlata.setText("Moviendo plataforma hacia adentro");
				getScoba().getPlataforma().mover(Direccion.ADENTRO);
				btnStopPlata.setEnabled(true);
				
				
				}
				else
				{
					btnAcercarPlata.setSelected(true);
				}
				
			}
		});
	
		btnAcercarPlata.setIcon(new ImageIcon( getClass().getResource("resources/izq.png" )));		
		btnAcercarPlata.setBounds(203, 102, 32, 32);
		panelPlata.add(btnAcercarPlata);
		
		bbtnAbajoPlata = new JToggleButton("");
		bbtnAbajoPlata.addActionListener(new ActionListener() 
		{
			public void actionPerformed(ActionEvent e) 
			{
				if(bbtnAbajoPlata.isSelected())
				{
				btnArribaPlata.setEnabled(false);
				btnAcercarPlata.setEnabled(false);
				btnAlejarPlata.setEnabled(false);
				lblPlata.setText("Moviendo plataforma hacia abajo");
				getScoba().getPlataforma().mover(Direccion.ABAJO);
				btnStopPlata.setEnabled(true);
				
				}
				else
				{
					bbtnAbajoPlata.setSelected(true);
				}
			}
		});
		
		
		bbtnAbajoPlata.setIcon(new ImageIcon( getClass().getResource("resources/aba.png" )));
		bbtnAbajoPlata.setBounds(118, 167, 32, 32);
		panelPlata.add(bbtnAbajoPlata);
		
		JLabel lblAcercar = new JLabel("Acercar");
		lblAcercar.setBounds(202, 142, 46, 14);
		panelPlata.add(lblAcercar);
		
		JLabel lblAlejar = new JLabel("Alejar");
		lblAlejar.setBounds(31, 142, 46, 14);
		panelPlata.add(lblAlejar);
		
		JLabel lblArriba = new JLabel("Arriba");
		lblArriba.setBounds(119, 18, 46, 14);
		panelPlata.add(lblArriba);
		
		JLabel lbl_abajo_plat = new JLabel("Abajo");
		lbl_abajo_plat.setBounds(119, 202, 46, 14);
		panelPlata.add(lbl_abajo_plat);
		
		panelCupu = new JPanel();
		panelCupu.setBorder(new TitledBorder(null, "Cupula", TitledBorder.CENTER, TitledBorder.TOP, new Font ( "Arial", Font.BOLD, 18 ), new Color(75, 0, 130)));
		panelCupu.setBounds(332, 366, 274, 210);
		contentPane.add(panelCupu);
		panelCupu.setLayout(null);
		
		btnStopCupu = new JToggleButton("");
		btnStopCupu.setEnabled(false);
		btnStopCupu.addActionListener(new ActionListener() 
		{
			public void actionPerformed(ActionEvent e) 
			{			
				if(btnStopCupu.isSelected()){
				lblCupula.setText("Cupula : Parada");
				getScoba().getCupula().mover(Direccion.PARADO);
				enablebuttonsCupula();
				btnStopCupu.setEnabled(false);
				}
				else
				{
					btnStopCupu.setSelected(true);
					
				}
			}
		});
		
		btnStopCupu.setIcon(new ImageIcon(getClass().getResource("resources/stop.png" )));
		btnStopCupu.setOpaque(true);
		btnStopCupu.setContentAreaFilled(false);
		btnStopCupu.setBorderPainted(false);
		btnStopCupu.setBounds(110, 43, 55, 53);
		panelCupu.add(btnStopCupu);
		
		lblCupula = new JLabel("Cupula : Parada");
		lblCupula.setBounds(10, 184, 254, 14);
		panelCupu.add(lblCupula);
		
		btnIzqCupu = new JToggleButton("");
		btnIzqCupu.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e) 
			{
				
				if(btnIzqCupu.isSelected())
				{
				btnDerCupu.setEnabled(false);
				btnStopCupu.setEnabled(true);
				lblCupula.setText("Girando cupula en sentido antihorario");
				getScoba().getCupula().mover(Direccion.IZQUIERDA);
				
				}
				else
				{
					btnIzqCupu.setSelected(true);
				}
			}
		});
		
		btnIzqCupu.setIcon(new ImageIcon( getClass().getResource("resources/der.png" )));
		btnIzqCupu.setBounds(24, 53, 32, 32);
		panelCupu.add(btnIzqCupu);
		
		btnDerCupu = new JToggleButton("");
		btnDerCupu.addActionListener(new ActionListener() 
		{
			public void actionPerformed(ActionEvent e) 
			{				
				if(btnDerCupu.isSelected())
				{
				
				btnIzqCupu.setEnabled(false);
				btnStopCupu.setEnabled(true);
				lblCupula.setText("Girando cupula en sentido horario");
				getScoba().getCupula().mover(Direccion.DERECHA);
				
				}
				else
				{
					btnDerCupu.setSelected(true);
				}
			}
		});

		btnDerCupu.setIcon(new ImageIcon( getClass().getResource("resources/izq.png" )));
		btnDerCupu.setBounds(217, 53, 32, 32);
		panelCupu.add(btnDerCupu);
		
		JLabel lblvelCupu = new JLabel("Velocidad");
		lblvelCupu.setFont(new Font("PT Serif", Font.PLAIN, 15));
		lblvelCupu.setBounds(65, 140, 71, 14);
		panelCupu.add(lblvelCupu);
		
		rdbtnlentaCupu = new JRadioButton("Lenta");
		rdbtnlentaCupu.addActionListener(new ActionListener() 
		{
			public void actionPerformed(ActionEvent arg0) 
			{
				if(rdbtnlentaCupu.isSelected())
				{
					getScoba().getCupula().activarVelLenta(true);
				}
			}
		});
		rdbtnlentaCupu.setBounds(162, 118, 87, 23);
		panelCupu.add(rdbtnlentaCupu);
		
		rdbtnnormalCupu = new JRadioButton("Normal");
		rdbtnnormalCupu.addActionListener(new ActionListener() 
		{
			public void actionPerformed(ActionEvent e) 
			{
				if(rdbtnnormalCupu.isSelected())
				{
					getScoba().getCupula().activarVelLenta(false);
				}
			}
		});
		rdbtnnormalCupu.setBounds(162, 154, 87, 23);
		rdbtnnormalCupu.setSelected(true);
		panelCupu.add(rdbtnnormalCupu);
		
		ButtonGroup GrupovelCupula = new ButtonGroup(); 
		GrupovelCupula.add(rdbtnnormalCupu);
		GrupovelCupula.add(rdbtnlentaCupu);
		
		btnEspejoSecundario = new JButton("Espejo Secundario");
		btnEspejoSecundario.addActionListener(new ActionListener() 
		{
			public void actionPerformed(ActionEvent e) 
			{
				try
				{
					if(!espejo.isVisible())
						{						
						espejo.setVisible(true);
						}
					else{
						espejo.requestFocus();
						espejo.setExtendedState(JFrame.NORMAL);
						}
				}
				catch(Exception e1)
				{
				espejo = new EspejoSecundarioGUI(getScoba());				
				espejo.setVisible(true);
				}
			
			}
		});
		btnEspejoSecundario.setBounds(428, 594, 127, 23);
		contentPane.add(btnEspejoSecundario);
		
		btnAyuda = new JButton("?");
		btnAyuda.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				
				
				try
				{
					if(!manoplaAyuda.isVisible())
						{						
						manoplaAyuda.setVisible(true);
						}
					else{
						manoplaAyuda.requestFocus();
						manoplaAyuda.setExtendedState(JFrame.NORMAL);
						}
				}
				catch(Exception e1)
				{
					manoplaAyuda = new ManoplaAyuda();				
					manoplaAyuda.setVisible(true);
				}
				
				
				
			}
		});
		btnAyuda.setForeground(Color.BLUE);
		btnAyuda.setBackground(Color.BLUE);
		btnAyuda.setBounds(622, 28, 37, 23);
		contentPane.add(btnAyuda);
	

		/*
		 * Este For desabilita todos los eventos del mouse para el JSlider
		 * solo permite la ruedita del mouse
		 * */
	for (MouseListener ml : sliderVelManual.getMouseListeners()){
	    sliderVelManual.removeMouseListener(ml);
	}

	
	
	if(!flagVelocidad)
	{
		velocidadDisabled();
	}
	
	
		
	}
	
	
	
	
	/**
	 * 
	 * 
	 */
	public void enableButtons()
	{		
		btnEsteTel.setEnabled(true);
		btnEsteTel.setSelected(false);
		btnSureTel.setSelected(false);
		btnNorteTel.setSelected(false);
		btnOesteTel.setSelected(false);
		btnSureTel.setEnabled(true);
		btnOesteTel.setEnabled(true);
		btnNorteTel.setEnabled(true);		
	}

	/**
	 * 
	 */
	public void enablebuttonsCupula()
	{	
		btnDerCupu.setEnabled(true);
		btnIzqCupu.setEnabled(true);
		btnDerCupu.setSelected(false);
		btnIzqCupu.setSelected(false);
		btnStopCupu.setSelected(false);
	}
	
	/**
	 * 
	 */
	public void enablebuttonsPlataforma()
	{	
		btnAlejarPlata.setEnabled(true);
		btnAcercarPlata.setEnabled(true);
		bbtnAbajoPlata.setEnabled(true);
		btnArribaPlata.setEnabled(true);
		btnAlejarPlata.setSelected(false);
		btnAcercarPlata.setSelected(false);
		bbtnAbajoPlata.setSelected(false);
		btnArribaPlata.setSelected(false);
		btnStopPlata.setEnabled(false);
		btnStopPlata.setSelected(false);
		
	}
	
	/**
	 * habilita la velocidadde movimiento lenta media y rapida
	 */
	public void velocidadEnabled()
	{
		rdbtnLenta.setEnabled(true);
		rdbtnMedia.setEnabled(true);
		rdbtnAlta.setEnabled(true);	
	}
	
	
	
	/**
	 * deshabilita la velocidadde movimiento lenta media y rapida
	 */
	public void velocidadDisabled()
	{
	rdbtnLenta.setEnabled(false);
	rdbtnMedia.setEnabled(false);
	rdbtnAlta.setEnabled(false);
	
	}
	
	public void habilitarBotonesVelocidades(boolean s)
	{
		rdbtnLenta.setEnabled(s);
		rdbtnMedia.setEnabled(s);
		rdbtnAlta.setEnabled(s);
		rdbtnManual.setEnabled(s);
	}
	
	
	
	public JLabel getLblTelescopio() {
		return lblTelescopio;
	}

	public void setLblTelescopio(JLabel lblTelescopio) {
		this.lblTelescopio = lblTelescopio;
	}

	public JLabel getLblPlata() {
		return lblPlata;
	}

	public void setLblPlata(JLabel lblPlata) {
		this.lblPlata = lblPlata;
	}

	public JLabel getLblCupula() {
		return lblCupula;
	}

	public void setLblCupula(JLabel lblCupula) {
		this.lblCupula = lblCupula;
	}

	public JSlider getSliderVelManual() {
		return sliderVelManual;
	}

	public void setSliderVelManual(JSlider velManual) {
		this.sliderVelManual = velManual;
	}

	public JLabel getLblRapida() {
		return lblRapida;
	}

	public void setLblRapida(JLabel lblRapida) {
		this.lblRapida = lblRapida;
	}

	public JLabel getLblMedia() {
		return lblMedia;
	}

	public void setLblMedia(JLabel lblMedia) {
		this.lblMedia = lblMedia;
	}

	public JRadioButton getRdbtnLenta() {
		return rdbtnLenta;
	}

	public void setRdbtnLenta(JRadioButton rdbtnLenta) {
		this.rdbtnLenta = rdbtnLenta;
	}

	public JRadioButton getRdbtnMedia() {
		return rdbtnMedia;
	}

	public void setRdbtnMedia(JRadioButton rdbtnMedia) {
		this.rdbtnMedia = rdbtnMedia;
	}

	public JRadioButton getRdbtnAlta() {
		return rdbtnAlta;
	}

	public void setRdbtnAlta(JRadioButton rdbtnAlta) {
		this.rdbtnAlta = rdbtnAlta;
	}

	public JRadioButton getRdbtnManual() {
		return rdbtnManual;
	}

	public void setRdbtnManual(JRadioButton rdbtnManual) {
		this.rdbtnManual = rdbtnManual;
	}

	public JCheckBox getChkBoxRelojeria() {
		return chkBoxRelojeria;
	}

	public void setChkBoxRelojeria(JCheckBox chkBoxRelojeria) {
		this.chkBoxRelojeria = chkBoxRelojeria;
	}

	public JRadioButton getRdbtnCalado() {
		return rdbtnCalado;
	}

	public void setRdbtnCalado(JRadioButton rdbtnCalado) {
		this.rdbtnCalado = rdbtnCalado;
	}

	public JRadioButton getRdbtnGuiado() {
		return rdbtnGuiado;
	}

	public void setRdbtnGuiado(JRadioButton rdbtnGuiado) {
		this.rdbtnGuiado = rdbtnGuiado;
	}

	public JRadioButton getRdbtnlentaCupu() {
		return rdbtnlentaCupu;
	}

	public void setRdbtnlentaCupu(JRadioButton rdbtnlentaCupu) {
		this.rdbtnlentaCupu = rdbtnlentaCupu;
	}

	public JRadioButton getRdbtnnormalCupu() {
		return rdbtnnormalCupu;
	}

	public void setRdbtnnormalCupu(JRadioButton rdbtnnormalCupu) {
		this.rdbtnnormalCupu = rdbtnnormalCupu;
	}
	
	
	public JPanel getPanelVelocidad() {
		return panelVelocidad;
	}

	public void setPanelVelocidad(JPanel panelVelocidad) {
		this.panelVelocidad = panelVelocidad;
	}

	public JLabel getLblVelocidad() {
		return lblVelocidad;
	}

	public void setLblVelocidad(JLabel lblVelocidad) {
		this.lblVelocidad = lblVelocidad;
	}

	/**
	 * Desactiva el panel de velocidad con todos sus componentes
	 */
	public void DesactivarPanelVelocidad()
	{
		
		Component[] com = panelVelocidad.getComponents();  
		for (int a = 0; a < com.length; a++) {  
		     com[a].setEnabled(false);  
		}  
		setFlagSlideActivo(false);

	}

	/**
	 * Activa el panel con todos sus componentes
	 */
	public void habilitarPanelVelocidad(boolean s)
	{
		Component[] com = panelVelocidad.getComponents();  
		for (int a = 0; a < com.length; a++) {  
		     com[a].setEnabled(s);  
		}
		
		setFlagSlideActivo(s);

		
	}
	
	
	public void habilitarPanelTelescopio(boolean s)
	{
		Component[] com = panelTel.getComponents();  
		for (int a = 0; a < com.length; a++) {  
		     com[a].setEnabled(s);  
		}
		
		btnStopTel.setEnabled(false);	

		
	}
	
	public void habilitarPanelCupula(boolean s)
	{
		Component[] com = panelCupu.getComponents();  
		for (int a = 0; a < com.length; a++) {  
		     com[a].setEnabled(s);  
		}
		
		btnStopCupu.setEnabled(false);

		
	}
	
	public void habilitarPanelPlataforma(boolean s)
	{
		Component[] com = panelPlata.getComponents();  
		for (int a = 0; a < com.length; a++) {  
		     com[a].setEnabled(s);  
		}
		
		btnStopPlata.setEnabled(false);

		
	}
	
	public void habilitarPanelRelojeria(boolean s)
	{
		Component[] com = panelRelojeria.getComponents();  
		for (int a = 0; a < com.length; a++) {  
		     com[a].setEnabled(s);  
		}	
	}
	
	public void habilitarPanelMovimiento(boolean s)
	{
		Component[] com = panelMovimiento.getComponents();  
		for (int a = 0; a < com.length; a++) {  
		     com[a].setEnabled(s);  
		}	
	}
	
	public void activarControles(boolean s)
	{
		habilitarPanelPlataforma(s);
		habilitarPanelCupula(s);
		habilitarPanelTelescopio(s);
		habilitarPanelMovimiento(s);
		habilitarPanelRelojeria(s);
		
	}
	
	/**
	 * Mueve el telescopio segun la direccion que se le pase por parametro
	 * @param dire
	 */
	private void moverTelescopio(Direccion dire)
	{
		if(this.rdbtnManual.isSelected())
		{
			sliderVelManual.setValue(telescopio.getRampaValMinManopla());
			try {
				telescopio.setearVelocidad(telescopio.getRampaValMinManopla());
			} catch (ManoplaException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			try {
				getScoba().getTelescopio().mover(dire);
			} catch (ManoplaException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		else
		{
			if(rdbtnAlta.isSelected())
			{
				try {
					telescopio.acelerarTelescopio(telescopio.getRampaValMaxManopla(), telescopio.getRampaDelayManopla());
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}				
			}
			else if(rdbtnMedia.isSelected())
			{
				try {
					Integer vel = (telescopio.getRampaValMaxManopla() + telescopio.getRampaValMinManopla())/2;
					telescopio.acelerarTelescopio(vel, telescopio.getRampaDelayManopla());
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}	
			}
			else if(rdbtnLenta.isSelected())
			{
				try {
					telescopio.acelerarTelescopio(telescopio.getRampaValMinManopla(), telescopio.getRampaDelayManopla());
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}	
			}
			else {}
			
			try {
				getScoba().getTelescopio().mover(dire);
			} catch (ManoplaException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

	@Override
	public void update(Observable objectObs, Object argument) {
		System.out.println("Cambios en observable "+objectObs.getClass() + " objeto " + argument);
		if(((Accion)argument).equals(Accion.TEL_MOV))
		{
			
		}
		
	}

	public boolean isFlagVelocidadManual() {
		return flagVelocidadManual;
	}

	public void setFlagVelocidadManual(boolean flagVelocidadManual) {
		this.flagVelocidadManual = flagVelocidadManual;
	}

	public boolean isFlagSlideActivo() {
		return flagSlideActivo;
	}

	public void setFlagSlideActivo(boolean flagSlideActivo) {
		this.flagSlideActivo = flagSlideActivo;
	}

	public static Scoba getScoba() {
		return scoba;
	}

	public static void setScoba(Scoba scoba) {
		ManoplaTelGUI.scoba = scoba;
	}
	public JPanel getPanelTel() {
		return panelTel;
	}
	
	public void actualizarValoresSlider()
	{
		sliderVelManual.setMinimum(scoba.getTelescopio().getRampaValMinManopla());
		sliderVelManual.setMaximum(scoba.getTelescopio().getRampaValMaxManopla());
		sliderVelManual.setValue(scoba.getTelescopio().getRampaValMinManopla());
	}
	
	public void actualizarEstadoRelojeria()
	{
		chkBoxRelojeria.setSelected(this.telescopio.isRelojeria());
	}
}
